Field
Embodiments relate, generally, to resource virtualization in processors and, more specifically, to wavefront virtualization for general purpose computing in graphics processing units.
Background
While chip designers originally created graphics processing units (GPUs) for the rapid rendering of images for display, software developers have been increasingly trying to use GPUs for general-purpose computing. However, because GPUs are designed to handle large amounts of data simultaneously, executing general-purpose code on a GPU can prove challenging.
One of the disadvantages of using GPUs for general-purpose computing is their lack of scheduling flexibility. Certain computing tasks may need constant task scheduling in order to execute efficiently. For example, a work producer task can schedule work for a consumer task by writing the work into a buffer. If too many producer tasks are scheduled, the space in the buffer can run out. When this happens, consumer tasks should be scheduled more often to free up space in the buffer and the producer tasks can complete. Another example of tasks needing scheduling flexibility may be when a number of tasks exceeding the hardware resources available try to implement a global barrier. In this scenario, some tasks must relinquish the hardware so that others can be scheduled to run and arrive at the barrier.